home *** CD-ROM | disk | FTP | other *** search
- <?xml version="1.0" encoding="UTF-8"?>
- <!--For converting a Windows Vista Contact file into Open Contacts XML which may be imported into Open Contacts
- Based on VistaToOCXML.xsl, ImportVista.xsl is created for bulk importing contact files of Windows Vista.
- ImportVista.xsl is used by Open Contacts directly.
- -->
- <xsl:stylesheet version="1.0"
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:c="http://schemas.microsoft.com/Contact">
- <xsl:output method="xml" omit-xml-declaration="yes" encoding="UTF-8" />
-
- <xsl:template match="c:contact">
-
- <Contact>
-
- <xsl:attribute name="Name">
- <xsl:value-of select="c:NameCollection/c:Name/c:FormattedName"/>
- </xsl:attribute>
-
- <xsl:attribute name="Title">
- <xsl:value-of select="c:NameCollection/c:Name/c:Title"/>
- </xsl:attribute>
-
- <xsl:attribute name="Surname">
- <xsl:value-of select="c:NameCollection/c:Name/c:FamilyName"/>
- </xsl:attribute>
-
- <xsl:attribute name="GivenName">
- <xsl:value-of select="c:NameCollection/c:Name/c:GivenName"/>
- </xsl:attribute>
-
- <xsl:attribute name="MidName">
- <xsl:value-of select="c:NameCollection/c:Name/c:MiddleName"/>
- </xsl:attribute>
-
- <xsl:attribute name="IsCompany">
- <xsl:text>0</xsl:text>
- </xsl:attribute>
-
- <Notes>
- <xsl:value-of select="c:Notes"/>
- </Notes>
-
- <Sections>
- <Section Name="Personal">
- <Fields>
- <xsl:for-each select="c:EmailAddressCollection/c:EmailAddress">
- <Field>
- <xsl:attribute name="Name">
- <xsl:if test="c:LabelCollection/c:Label='Preferred'">
- <xsl:text>Primary </xsl:text>
- </xsl:if>
- <xsl:text>Email</xsl:text>
- </xsl:attribute>
-
- <xsl:attribute name="Value">
- <xsl:value-of select="c:Address"/>
- </xsl:attribute>
- </Field>
- </xsl:for-each>
-
- <xsl:for-each select="c:PhoneNumberCollection/c:PhoneNumber">
-
- <xsl:if test="c:LabelCollection/c:Label='Pager'">
- <Field>
- <xsl:attribute name="Name">Pager</xsl:attribute>
- <xsl:attribute name="Value">
- <xsl:value-of select="c:Number"/>
- </xsl:attribute>
- </Field>
- </xsl:if>
-
- <xsl:if test="c:LabelCollection/c:Label='Cellular'">
- <Field>
- <xsl:attribute name="Name">Mobile</xsl:attribute>
- <xsl:attribute name="Value">
- <xsl:value-of select="c:Number"/>
- </xsl:attribute>
- </Field>
- </xsl:if>
-
- <xsl:if test="c:LabelCollection/c:Label='Fax'">
- <xsl:if test="c:LabelCollection/c:Label='Personal'">
- <Field>
- <xsl:attribute name="Name">Fax</xsl:attribute>
- <xsl:attribute name="Value">
- <xsl:value-of select="c:Number"/>
- </xsl:attribute>
- </Field>
- </xsl:if>
- </xsl:if>
-
- <xsl:if test="c:LabelCollection/c:Label='Voice'">
- <xsl:if test="c:LabelCollection/c:Label='Personal'">
- <Field>
- <xsl:attribute name="Name">Phone</xsl:attribute>
- <xsl:attribute name="Value">
- <xsl:value-of select="c:Number"/>
- </xsl:attribute>
- </Field>
- </xsl:if>
- </xsl:if>
-
- </xsl:for-each>
-
- <xsl:for-each select="c:UrlCollection/c:Url">
- <xsl:if test="c:LabelCollection/c:Label='Personal'">
- <Field>
- <xsl:attribute name="Name">Web</xsl:attribute>
- <xsl:attribute name="Value">
- <xsl:value-of select="c:Value"/>
- </xsl:attribute>
- </Field>
- </xsl:if>
- </xsl:for-each>
-
- <xsl:for-each select="c:DateCollection/c:Date">
- <xsl:if test="c:LabelCollection/c:Label='wab:Birthday'">
- <Field>
- <xsl:attribute name="Name">Birthday</xsl:attribute>
- <xsl:attribute name="Value">
- <xsl:value-of select="substring(c:Value, 1, 10)"/>
- </xsl:attribute>
- </Field>
- </xsl:if>
-
- <xsl:if test="c:LabelCollection/c:Label='wab:Anniversary'">
- <Field>
- <xsl:attribute name="Name">Anniversary</xsl:attribute>
- <xsl:attribute name="Value">
- <xsl:value-of select="substring(c:Value, 1, 10)"/>
- </xsl:attribute>
- </Field>
- </xsl:if>
- </xsl:for-each>
-
- <xsl:for-each select="c:PersonCollection/c:Person">
- <xsl:if test="c:LabelCollection/c:Label='wab:Spouse'">
- <Field>
- <xsl:attribute name="Name">Spouse</xsl:attribute>
- <xsl:attribute name="Value">
- <xsl:value-of select="c:FormattedName"/>
- </xsl:attribute>
- </Field>
- </xsl:if>
-
- </xsl:for-each>
-
- <xsl:for-each select="c:PhysicalAddressCollection/c:PhysicalAddress">
- <xsl:if test="c:LabelCollection/c:Label='Personal'">
-
- <Field>
- <xsl:attribute name="Name">Street</xsl:attribute>
- <xsl:attribute name="Value">
- <xsl:value-of select="c:Street"/>
- </xsl:attribute>
- </Field>
-
- <Field>
- <xsl:attribute name="Name">City</xsl:attribute>
- <xsl:attribute name="Value">
- <xsl:value-of select="c:Locality"/>
- </xsl:attribute>
- </Field>
-
- <Field>
- <xsl:attribute name="Name">State</xsl:attribute>
- <xsl:attribute name="Value">
- <xsl:value-of select="c:Region"/>
- </xsl:attribute>
- </Field>
-
- <Field>
- <xsl:attribute name="Name">Postcode</xsl:attribute>
- <xsl:attribute name="Value">
- <xsl:value-of select="c:PostalCode"/>
- </xsl:attribute>
- </Field>
-
- <Field>
- <xsl:attribute name="Name">Country</xsl:attribute>
- <xsl:attribute name="Value">
- <xsl:value-of select="c:Country"/>
- </xsl:attribute>
- </Field>
-
- </xsl:if>
- </xsl:for-each>
-
- </Fields>
- </Section>
-
- <Section Name="Work">
- <Fields>
-
- <xsl:for-each select="c:PositionCollection/c:Position">
- <Field>
- <xsl:attribute name="Name">Office</xsl:attribute>
- <xsl:attribute name="Value">
- <xsl:value-of select="c:Office"/>
- </xsl:attribute>
- </Field>
-
- <Field>
- <xsl:attribute name="Name">Deaprtment</xsl:attribute>
- <xsl:attribute name="Value">
- <xsl:value-of select="c:Department"/>
- </xsl:attribute>
- </Field>
-
- <Field>
- <xsl:attribute name="Name">Title</xsl:attribute>
- <xsl:attribute name="Value">
- <xsl:value-of select="c:JobTitle"/>
- </xsl:attribute>
- </Field>
-
- <Field>
- <xsl:attribute name="Name">Company</xsl:attribute>
- <xsl:attribute name="Value">
- <xsl:value-of select="c:Company"/>
- </xsl:attribute>
- </Field>
-
- </xsl:for-each>
-
- <xsl:for-each select="c:PhoneNumberCollection/c:PhoneNumber">
-
- <xsl:if test="c:LabelCollection/c:Label='Fax'">
- <xsl:if test="c:LabelCollection/c:Label='Business'">
- <Field>
- <xsl:attribute name="Name">Fax</xsl:attribute>
- <xsl:attribute name="Value">
- <xsl:value-of select="c:Number"/>
- </xsl:attribute>
- </Field>
- </xsl:if>
- </xsl:if>
-
- <xsl:if test="c:LabelCollection/c:Label='Voice'">
- <xsl:if test="c:LabelCollection/c:Label='Business'">
- <Field>
- <xsl:attribute name="Name">Phone</xsl:attribute>
- <xsl:attribute name="Value">
- <xsl:value-of select="c:Number"/>
- </xsl:attribute>
- </Field>
- </xsl:if>
- </xsl:if>
-
- </xsl:for-each>
-
- <xsl:for-each select="c:PhysicalAddressCollection/c:PhysicalAddress">
- <xsl:if test="c:LabelCollection/c:Label='Business'">
-
- <Field>
- <xsl:attribute name="Name">Street</xsl:attribute>
- <xsl:attribute name="Value">
- <xsl:value-of select="c:Street"/>
- </xsl:attribute>
- </Field>
-
- <Field>
- <xsl:attribute name="Name">City</xsl:attribute>
- <xsl:attribute name="Value">
- <xsl:value-of select="c:Locality"/>
- </xsl:attribute>
- </Field>
-
- <Field>
- <xsl:attribute name="Name">State</xsl:attribute>
- <xsl:attribute name="Value">
- <xsl:value-of select="c:Region"/>
- </xsl:attribute>
- </Field>
-
- <Field>
- <xsl:attribute name="Name">Postcode</xsl:attribute>
- <xsl:attribute name="Value">
- <xsl:value-of select="c:PostalCode"/>
- </xsl:attribute>
- </Field>
-
- <Field>
- <xsl:attribute name="Name">Country</xsl:attribute>
- <xsl:attribute name="Value">
- <xsl:value-of select="c:Country"/>
- </xsl:attribute>
- </Field>
-
- </xsl:if>
- </xsl:for-each>
-
- <xsl:for-each select="c:UrlCollection/c:Url">
- <xsl:if test="c:LabelCollection/c:Label='Business'">
-
- <Field>
- <xsl:attribute name="Name">Web</xsl:attribute>
- <xsl:attribute name="Value">
- <xsl:value-of select="c:Value"/>
- </xsl:attribute>
- </Field>
-
- </xsl:if>
- </xsl:for-each>
-
- </Fields>
- </Section>
-
- </Sections>
- </Contact>
-
- </xsl:template>
-
- </xsl:stylesheet>